<?php
// +-----------------------------------------------------------------------+
// |                                                                       |
// | WebFormsQA     (Question - Answer)                                    |
// | Copyright  (C) 2010                                                   |
// | Official site  www.scale-tech.ru                                      |
// | email          scale-tech@mail.ru                                     |
// | autor          Alexander Demachev                                     |
// |                                                                       |
// | This program is free software; you can redistribute it and/or modify  |
// | it under the terms of the GNU General Public License as published by  |
// | the Free Software Foundation; version 2 of the License.               |
// |                                                                       |
// | This program is distributed in the hope that it will be useful,       |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of        |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         |
// | GNU General Public License for more details.                          |
// +-----------------------------------------------------------------------+


/**
 * @file utils.test.php
 * @brief файл содержит общие методы используемые тестами \n
 * @include utils.test.php
 */

/*! @addtogroup TestWebFormsQA Tестирование проекта WebFormsQA
 *  Группа включает классы для тестирования исходного кода
 *  @{
 */


/**
 * @class Utils
 * @brief Инструментальных класс предназначен для хранения общих методов,
 *        используемых в любом из тестов \n
 *        Исходный код [ @ref utils.test.php ]        
 */
class Utils {

    /** 
     * @brief Метод выводит двумерный массив
     *        array( '0'=>'array('key'=>'mean') ) в файл
     * @param string $name  - название файла в текущем каталоге
     * @param array  &$data - ссылка на массив с данными
     */
    function outInFile($name, &$data)
    {
        if($f_res = fopen("$name", "w")) {
            for ($i=0; $i<count($data); $i++) {
                //echo "<br>i==".$i."<br>";
                foreach ($data[$i] as  $key => $mean) {
                   fwrite( $f_res, "\x0a[$i==" );
                   fwrite( $f_res, $key );
                   fwrite( $f_res, "]" );
                   fwrite( $f_res, "==" );
                   fwrite( $f_res, $mean );
                   fwrite( $f_res, "I\x0a" );
                }
            }
            fclose($f_res);
        }
    }

    /** 
     * @brief Метод выводит двумерный массив
     *        array( '0'=>'array('key'=>'mean') ) в файл c настройкой атрибутов
     * @param string $name  	- название файла в текущем каталоге
     * @param array  &$data 	- ссылка на массив с данными
     * @param string $str_conf  - атрибуты исползуемые при открытие файла
     */
    function outInFileConf($name, &$data, $str_conf)
    {
        if($f_res = fopen("$name", $str_conf)) {
            for ($i=0; $i<count($data); $i++) {
                //echo "<br>i==".$i."<br>";
                foreach ($data[$i] as  $key => $mean) {
                   fwrite( $f_res, "\x0a[$i==" );
                   fwrite( $f_res, $key );
                   fwrite( $f_res, "]" );
                   fwrite( $f_res, "==" );
                   fwrite( $f_res, $mean );
                   fwrite( $f_res, "I\x0a" );
                }
            }
            fclose($f_res);
        }
    }


    /** 
     * @brief Функция сравнивает элемент двумерного массива с эталоном(ожидаемым значением)
     *        сравниваются как ключи, так и значения
     * @param array $etalon_data    - одномерный эталонный массив
     * @param array $result         - полученный массив
     * @param integer $index        - индекс массива result, который сравнивается
     */
    function compareKeysAndMean($etalon_data, $result, $index)
    {
        foreach ($etalon_data as $key => $mean) {
            if (isset($result[$index][$key])) {
                $this->assertTrue(!strcmp($mean, $result[$index][$key]), "key=$key  "."etalon=>$mean != ".$result[$index][$key]);
            } else {
                $this->assertTrue(false, "$key"." not this key in the massiv result");
            }
        }
    } // end compareKeysAndMean

} // Utils

/*! @} */

?>
